package cn.acmenms.service;

import cn.acmenms.exception.BusinessException;
import cn.acmenms.po.model.Calendar4SignIn;
import cn.acmenms.po.model.SignIn;
import cn.acmenms.po.model.SignInInfo;
import cn.acmenms.po.query.SignInQuery;
import cn.acmenms.po.vo.PaginationResult;
import cn.acmenms.po.vo.TokenUser;

import java.util.List;

/**
 * @ClassName: SignInService
 * @Description: 签到业务
 * @author: 神奇的鸭鸭
 * @Date: 2018/2/9 23:01
 */
public interface SignInService {

    /**
     * 获取用户当天签到信息
     * @param userId userId
     * @return 签到信息
     */
    SignInInfo findSignInInfoByUserId(Integer userId);

    /**
     * 用户签到
     * @param sourceFrom 签到来源
     * @param tokenUser tokenUser
     * @return 签到信息
     * @throws BusinessException 业务异常
     */
    SignIn doSignIn(TokenUser tokenUser, String sourceFrom) throws BusinessException;

    /**
     * 根据年份获取用户的签到信息
     * @param userId 用户ID
     * @param year 查询年份
     * @return 用户签到列表
     * @throws BusinessException 业务异常
     */
    List<Calendar4SignIn> findUserSignInByYear(Integer userId, Integer year)  throws BusinessException;

    /**
     * 查询当天所有签到信息
     * @param query 签到查询条件
     * @return 查询结果——分页结果集
     * @throws BusinessException 业务异常
     */
    PaginationResult<SignIn> findCurDaySigIn(SignInQuery query)  throws BusinessException;
}